#ifndef BEAST_H
#define BEAST_H

#include <iostream>

#include "lists/classlist_template.h"

#include "Statistic.h"

using namespace std;

class Beast
{
	private:
		int level, hitPoints, maxHitPoints, XP, height, weight;
		string name, desc, race, attack;
		bool isAlive;
		ClassList<Statistic*> customStats;

	public:
		Beast();
		Beast(string x, string y, string z);
		virtual ~Beast();

		void createCustomStat(string x, string y){customStats += new Statistic(x,y);}//Creates a custom stat x = name, y = value

		void setCustomStat(int x, string y){this->customStats[x]->setValue(y);}//Sets a custom stat x = number,
		void setLevel(int x){this->level = x;}
		void setHitPoints(int x){this->hitPoints = x;}
		void setMaxHitPoints(int x){this->maxHitPoints = x;}
		void setXP(int x){this->XP = x;}
		void setHeight(int x){this->height = x;}
		void setWeight(int x){this->weight = x;}
		void setName(string x){this->name = x;}
		void setDesc(string x){this->desc = x;}
		void setRace(string x){this->race = x;}
		void setAttack(string x){this->attack = x;}
		void setIsAlive(){this->isAlive = !isAlive;}

		int getLevel()const{return this->level;}
		int getHitPoints()const{return this->hitPoints;}
		int getMaxHitPoints()const{return this->maxHitPoints;}
		int getXP()const{return this->XP;}
		int getHeight()const{return this->height;}
		int getWeight()const{return this->weight;}
		string getName()const{return this->name;}
		string getDesc()const{return this->desc;}
		string getRace()const{return this->race;};
		string getAttack()const{return this->attack;}
		string getCustomStat(int x)const{return this->customStats[x]->getsValue();}//Gets a custom stat value
		bool getIsAlive()const{return this->isAlive;}
};

#endif//BEAST_H
